home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / c2port.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.7 KB  |  66 lines

  1. /*
  2.  *  Silicon Labs C2 port Linux support
  3.  *
  4.  *  Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it>
  5.  *  Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it>
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify it
  8.  * under the terms of the GNU General Public License version 2 as published by
  9.  * the Free Software Foundation
  10.  */
  11.  
  12. #include <linux/device.h>
  13.  
  14. #define C2PORT_NAME_LEN            32
  15.  
  16. /*
  17.  * C2 port basic structs
  18.  */
  19.  
  20. /* Main struct */
  21. struct c2port_ops;
  22. struct c2port_device {
  23.     unsigned int access:1;
  24.     unsigned int flash_access:1;
  25.  
  26.     int id;
  27.     char name[C2PORT_NAME_LEN];
  28.     struct c2port_ops *ops;
  29.     struct mutex mutex;        /* prevent races during read/write */
  30.  
  31.     struct device *dev;
  32.  
  33.     void *private_data;
  34. };
  35.  
  36. /* Basic operations */
  37. struct c2port_ops {
  38.     /* Flash layout */
  39.     unsigned short block_size;    /* flash block size in bytes */
  40.     unsigned short blocks_num;    /* flash blocks number */
  41.  
  42.     /* Enable or disable the access to C2 port */
  43.     void (*access)(struct c2port_device *dev, int status);
  44.  
  45.     /* Set C2D data line as input/output */
  46.     void (*c2d_dir)(struct c2port_device *dev, int dir);
  47.  
  48.     /* Read/write C2D data line */
  49.     int (*c2d_get)(struct c2port_device *dev);
  50.     void (*c2d_set)(struct c2port_device *dev, int status);
  51.  
  52.     /* Write C2CK clock line */
  53.     void (*c2ck_set)(struct c2port_device *dev, int status);
  54. };
  55.  
  56. /*
  57.  * Exported functions
  58.  */
  59.  
  60. #define to_class_dev(obj) container_of((obj), struct class_device, kobj)
  61. #define to_c2port_device(obj) container_of((obj), struct c2port_device, class)
  62.  
  63. extern struct c2port_device *c2port_device_register(char *name,
  64.                     struct c2port_ops *ops, void *devdata);
  65. extern void c2port_device_unregister(struct c2port_device *dev);
  66.